/*!
 * jQuery Textarea AutoSize plugin
 * Author: Javier Julio
 * Licensed under the MIT license
 */
;(function ($, window, document, undefined) {

    var pluginName = "textareaAutoSize";
    var pluginDataName = "plugin_" + pluginName;
  
    var containsText = function (value) {
      return (value.replace(/\s/g, '').length > 0);
    };
  
    function Plugin(element, options) {
      this.element = element;
      this.$element = $(element);
      this.init();
    }
  
    Plugin.prototype = {
      init: function() {
        var height = this.$element.outerHeight();
        var diff = parseInt(this.$element.css('paddingBottom')) +
                   parseInt(this.$element.css('paddingTop')) || 0;
  
        if (containsText(this.element.value)) {
          this.$element.height(this.element.scrollHeight - diff);
        }
  
        // keyup is required for IE to properly reset height when deleting text
        this.$element.on('input keyup', function(event) {
          var $window = $(window);
          var currentScrollPosition = $window.scrollTop();
  
          $(this)
            .height(0)
            .height(this.scrollHeight - diff);
  
          $window.scrollTop(currentScrollPosition);
        });
      }
    };
  
    $.fn[pluginName] = function (options) {
      this.each(function() {
        if (!$.data(this, pluginDataName)) {
          $.data(this, pluginDataName, new Plugin(this, options));
        }
      });
      return this;
    };
  
  })(jQuery, window, document)